// BigDecimal 乘法问题
public class DemoTest {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal(1000000);
        // BigDecimal b = a.multiply(new BigDecimal(0.21));   //error 209999.9999999999922284388276239042170345783233642578125000000
        BigDecimal b = new BigDecimal(String.valueOf(0.21));  //right 210000.00
        System.out.println(b);
    }
}
// BigDecimal加减乘除以及取整方法
package exer;
import java.math.BigDecimal;
public class BigDecimalTest {
  public static void main(String[] args) {
    BigDecimal bignum1 = new BigDecimal("16.7");  
    BigDecimal bignum2 = new BigDecimal("5");  
    BigDecimal bignum3 = null;  
    //加法  
    bignum3 =  bignum1.add(bignum2);       
    System.out.println("和 是：" + bignum3);  
    //减法  
    bignum3 = bignum1.subtract(bignum2);  
    System.out.println("差  是：" + bignum3);  
    //乘法  
    bignum3 = bignum1.multiply(bignum2);  
    System.out.println("积  是：" + bignum3);  
    //除法  
    bignum3 = bignum1.divide(bignum2);  
    System.out.println("商  是：" + bignum3); 
    //取整
    BigDecimal bignum4 = new BigDecimal("59.75");
    long l  = bignum4.setScale( 0, BigDecimal.ROUND_UP ).longValue(); // 向上取整
    System.out.println("向上取整  是：" + l);
    long l2  = bignum4.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整
    System.out.println("向下取整  是：" + l2);
  }
}